﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace B.S.DataBase.Production.Domain
{ /// <summary>
  /// 生产领料基本信息主件
  /// </summary>
    public class ProductionModel
    {
        /// <summary>
        /// 生产领料id
        /// </summary>
        [Key]
        public int Id { get; set; }

        /// <summary>
        /// 单据主题（必填）
        /// </summary>
        public string DocumentSubject { get; set; }

        /// <summary>
        /// 单据编号（保存后自动生成）
        /// </summary>
        public string DocumentNumber { get; init; }

        /// <summary>
        /// 领料日期（默认当天）
        /// </summary>
        public DateTime MaterialDate { get; set; } = DateTime.Today;

        /// <summary>
        /// 来源单据类型（默认"无来源"）
        /// </summary>
        public string SourceDocumentType { get; set; }

        /// <summary>
        /// 来源单据（关联上游单据时填写）
        /// </summary>
        public string SourceDocument { get; set; }

        /// <summary>
        /// 领料数量合计（自动计算）
        /// </summary>
        public int TotalMaterialQuantity { get; set; } /*=> MaterialDetails?.Sum(d => d.MaterialQuantity) ?? 0;*/

        /// <summary>
        /// 制单日期（自动生成）
        /// </summary>
        public DateTime DocumentDate { get; init; } = DateTime.Now;

        /// <summary>
        /// 制单人员（自动填充当前用户）
        /// </summary>
        public string DocumentCreator { get; init; }

        /// <summary>
        /// 关联项目（可选）
        /// </summary>
        public string RelatedProject { get; set; }

        /// <summary>
        /// 备注（可选）
        /// </summary>
        public string Remarks { get; set; }

        /// <summary>
        /// 领料明细（至少1行）
        /// </summary>

        //public List<MaterialDetail> MaterialDetails { get; set; } = new();
    }
       

    /// <summary>
    /// 生产领料子件
    /// </summary>
        public class MaterialDetail
    {
       

        // 外键指向 ProductionModel
        public int ProductionModelId { get; set; }
        public ProductionModel ProductionModel { get; set; }

    }


}

